home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / PASCMP / CMPLXTES.PAS next >
Pascal/Delphi Source File  |  1994-06-29  |  2KB  |  87 lines

  1. { Example for using complex mathematics unit PasCmplx}
  2. { (c)1994 by Alex Klimovitski                        }
  3.  
  4. { This program doesn't perform anything meaningful,  }
  5. { except that it gives an example of using PasCmplx. }
  6. { If you are looking for more sense, see PASFFT.PAS. }
  7.  
  8. program CmplxTest;
  9.  
  10. {$G+}
  11.  
  12. uses WinCrt, PasCmplx;
  13. { Delete 'WinCrt' if your target is DOS or DPMI }
  14.  
  15. var
  16.   a, b, c, d: Double;
  17.   z, p, q: Complex;
  18.   I: Integer;
  19.   W: Word;
  20. begin
  21.   WriteLn(CTest87);
  22.   z := Cj;
  23.   WriteLn('j = ', CReal(z), '+j', CImag(z));
  24.   z := C1;
  25.   WriteLn('1 = ', CReal(z), '+j', CImag(z));
  26.  
  27.   Write('a, b>');
  28.   ReadLn(a, b);
  29.   z := Cmplx(a, b);
  30.   WriteLn('z = ', CReal(z), '+j', CImag(z));
  31.   WriteLn('z- = ', CReal(Conjug(z)), '+j', CImag(Conjug(z)));
  32.  
  33.   for I := 0 to 7 do
  34.   begin
  35.     if CCheck(CIPow(z, I)) <> 0 then
  36.     begin
  37.       WriteLn('z^', I, ': Can''t calculate power');
  38.       Continue;
  39.     end;
  40.     WriteLn('z^', I, ':', CReal(CIPow(z, I)), CImag(CIPow(z, I)));
  41.     WriteLn('z^', I, ':', CReal(CRPow(z, I)), CImag(CRPow(z, I)));
  42.     WriteLn('z^', I, ':', CReal(CPow(z, Cmplx(I, 0))), CImag(CPow(z, Cmplx(I, 0))));
  43.   end;
  44.  
  45.   Write('c, d>');
  46.   ReadLn(c, d);
  47.  
  48.   p := Cmplx(c, d);
  49.   WriteLn('p = ', CReal(p), '+j', CImag(p));
  50.   WriteLn('p- = ', CReal(Conjug(p)), '+j', CImag(Conjug(p)));
  51.  
  52.   q := CAdd(z, p);
  53.   WriteLn('q = z + p = ', CReal(q), '+j', CImag(q));
  54.  
  55.   q := CSub(z, p);
  56.   WriteLn('q = z - p = ', CReal(q), '+j', CImag(q));
  57.  
  58.   q := CMul(z, p);
  59.   WriteLn('q = z * p = ', CReal(q), '+j', CImag(q));
  60.  
  61.   q := CDiv(z, p);
  62.   if CCheck(q) <> 0 then
  63.     WriteLn('q = z / p: invalid division')
  64.   else
  65.   begin
  66.     WriteLn('q = z / p = ', CReal(q), '+j', CImag(q));
  67.     WriteLn('Check it:');
  68.     q := CMul(q, p);
  69.     WriteLn('z = q * p = ', CReal(q), '+j', CImag(q));
  70.   end;
  71.  
  72.   WriteLn('|z| = ',CAbs(z), '; arg(z) = ',CArg(z));
  73.  
  74.   z := Cmplx(a, b);
  75.   q := CExp(z);
  76.   if Lo(CTest(q)) > C87Ok then
  77.     WriteLn('Invalid real part of exp(z)');
  78.   if Hi(CTest(q)) > C87Ok then
  79.     WriteLn('Invalid complex part of exp(z)');
  80.  
  81.   WriteLn('exp(z) = ', CReal(q), '+j', CImag(q));
  82.   WriteLn('Check it:');
  83.   WriteLn('exp(z) = ', Exp(a) * Cos(b), '+j', Exp(a) * Sin(b));
  84.   p := CLn(q);
  85.   WriteLn('z =? ln(exp(z)) = ', CReal(p), '+j', CImag(p));
  86.   WriteLn('exp(z) =? exp(ln(exp(z))) = ', CReal(CExp(p)), '+j', CImag(CExp(p)));
  87. end.